Starlinkの衛星通信を経由してAWS IoT CoreとMQTT通信をしてみた
こんにちは、CX事業本部 IoT事業部の若槻です。
イーロン・マスクが展開する低軌道衛星を利用した衛星通信サービスStarlinkが国内(東日本)でも利用可能とのことで、早速弊社クラスメソッドでも検証が行われています。
- オフィスの屋上から衛星インターネット環境Starlinkに接続してみた | DevelopersIO
- #Starlink を試してわかった視界や配線周りの細かい要件 | DevelopersIO
- #Starlink をPrometheusで監視しAmazon ECS AnywhereでAWS連携する | DevelopersIO
私も出社時にStarlinkへの接続を試すことができる機会があったので、簡単にですが衛星通信を経由してAWS IoTとのMQTT通信を試してみました。
環境
Starlinkのアンテナはこちら。ビルの屋上に設置してあります。
電源と回線を兼ねたケーブルを屋内に引き込み、Wi-Fiルーターで接続できるようにしています。
操作端末であるMacbookからWi-Fiに繋げると、Starlink経由でインターネットに接続することができました。
回線速度は下りで260Mbps(計測時)でした。十分に高速ですね。
ちなみにStarlinkの利用環境のセットアップは大瀧さんにやって頂けました。ありがとうございます!
やってみた
AWS IoTへの接続準備
以前投稿した次のエントリを参考に、AWS IoTへの接続準備を行います。
準備は次のコマンドを実行して行いました。(ただし今回はDockerコンテナは使わず、mosquitto_pub
を直接実行します。)
//certsディレクトリの作成 mkdir ./certs //キーペアとデバイス証明書の作成 aws iot create-keys-and-certificate \ --set-as-active \ --private-key-outfile ./certs/privateKey.pem \ --certificate-pem-outfile ./certs/cert.pem //ルートCA証明書の取得 curl -o ./certs/rootCA.pem \ -s https://www.amazontrust.com/repository/AmazonRootCA1.pem //IoTポリシーの作成 aws iot create-policy \ --policy-name demoPolicy \ --policy-document file://demo-policy.json //IoTポリシーをデバイス証明書へアタッチ aws iot attach-principal-policy \ --policy-name demoPolicy \ --principal arn:aws:iot:ap-northeast-1:123456789012:cert/00c0479e991dcfa918d67b53762ecd95e1171c7ee984f44399d86a8c581ba817
MQTT通信(Publish)をしてみる
それではStarlink経由で、AWS IoTとのMQTT通信(Publish)を試してみます。
以前投稿した次のエントリを参考に、MosquittoをMQTTクライアントとして使用して行います。
AWS IoT Coreコンソールでトピック/demo/event
をSubscribeして通知を待ち受けます。
トピック/demo/event
宛にデータをPublishします。
mosquitto_pub \ -h $(aws iot describe-endpoint --endpoint-type iot:Data-ATS | jq -r .endpointAddress) \ -p 8883 \ -q 1 \ -i demo-device-id-1 \ -m '{"message":"Hello Starlink!"}' \ -t /demo/event \ --cafile ./certs/rootCA.pem \ --key ./certs/privateKey.pem \ --cert ./certs/cert.pem
すると送信したデータがコンソールに表示され、Publishが成功しました!遅延もまったく感じなかったです。
(後の祭りですがローカルのクライアントでSubscribeも試せば良かったです。)
おわりに
簡単にですが衛星通信を経由してAWS IoTとのMQTT通信を試してみました。
Starlinkの用途として、プロバイダーの回線が未整備のネットワーク過疎地でインターネットに接続できるようにするなどが考えられますが、IoTデバイスも野外の回線接続が不安定だったり細かったりする場所で利用されるケースは多いので、IoTデバイス -> Starlink -> AWS IoT
というパターンは有り得るのではないでしょうか。
以上